package com.xuecheng.teaching.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuecheng.api.comment.model.dto.CommentDTO;
import com.xuecheng.api.comment.model.dto.CommentReplyDTO;
import com.xuecheng.api.comment.model.qo.CommentConditionModel;
import com.xuecheng.api.comment.model.vo.CommentStatisticsVo;
import com.xuecheng.api.teaching.model.CompanyDTO;
import com.xuecheng.api.teaching.model.qo.QueryCompanyModel;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import com.xuecheng.teaching.entity.Company;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 教育机构 服务类
 */
public interface CompanyService extends IService<Company> {

    /**
     * 根据租户ID获取机构信息
     *
     * @param tenantId
     * @return
     */
    CompanyDTO getByTenantId(Long tenantId);

    /*
     * 点赞*/
    Boolean praise(Long commentId);

    //删除
    Boolean deleteComment(Long commentId);

    /**
     * 批量删除评论
     *
     * @param commentIds
     * @return
     */
    Boolean batchDelComment(List<Long> commentIds);

    /**
     * 分页查询评论内容， 可根据评论对象，可根据评论归属对象查询
     *
     * @param params
     * @param commentModel
     * @return
     */
    PageVO<CommentDTO> commentList(PageRequestParams params, CommentConditionModel commentModel, Boolean company);

    /**
     * 发表评论
     *
     * @param commentDTO
     * @return
     */
    CommentDTO comment(CommentDTO commentDTO, String userName);

    /**
     * 统计--用户
     *
     * @return CommentStatisticsVo 统计数据封装
     * @Param: coursePubId 课程发布id
     */
    CommentStatisticsVo getStatistics(Long coursePubId);


    /**
     * 回复评论
     *
     * @param dto
     * @param companyId
     * @return
     */
    CommentReplyDTO commentReply(CommentReplyDTO dto, Long companyId);

    /**
     * 查询机构列表--运营
     * @param params
     * @param model
     * @return
     */
    PageVO<CompanyDTO> queryCompanyList(PageRequestParams params, QueryCompanyModel model);

    /**
     * 根据id查询机构详情
     * @param companyId
     * @return
     */
    CompanyDTO getCompanyById(Long companyId);


    /**
     * 审核机构资料--运营
     *
     * @param companyDTO
     */
    void approveCompany(CompanyDTO companyDTO, String username);

    /**
     * 查询我的机构详情
     * @param companyId
     * @return
     */
    CompanyDTO getMyCompany(Long companyId);
}
